Software packages are generally stored in a repository as static files or tables accessed through a production server. Managing these repositories generally requires a client to request the production server to provide an entire index of all the packages in the repository, and then the client requests the production server to provide a particular package from the index that the client wants to access. Since the packages are stored statically, clients have no way of querying the packages within the repository without first obtaining the entire index of all the packages. Prior versions of repositories are generally removed upon new version updates, making a history of different versions of the repository since its creation un-obtainable. A history is generally not maintained when making changes to the repositories, making each repository directly visible and tracked by clients accessing them. Moreover, managing repositories generally provides no ability for repositories to appear differently between clients. Thus, configurations pertaining to what repository a given client uses are generally stored on that client, rather than the production server.